package model;

import java.util.ArrayList;
import java.util.HashMap;

public class Produto {
	private int id;
	private int estoque;
	private ArrayList<Integer> demandaReprimida = new ArrayList<Integer>();
	
	public Produto(int id, int estoque) {
		this.id = id;
		this.estoque = estoque;
	}

	public int getId() {
		return id;
	}

	public int getEstoque() {
		return estoque;
	}

	public ArrayList<Integer> getDemandaReprimida() {
		return demandaReprimida;
	}
	
	public void addDemandaReprimida(Integer quantidade) {
		demandaReprimida.add(quantidade);
	}
	
	public void resetDemandaReprimida() {
		this.demandaReprimida = new ArrayList<Integer>();
	}
	
	public boolean equals(Object obj) {
		Produto p = (Produto) obj;
		return (p.getId() == id);
	}
	
	public int hashCode() {
	    return id;
	}
	
	public static synchronized Pedido verificaDisponibilidade(Pedido pedidoInicial){
		Pedido pedido = new Pedido(pedidoInicial.getCliente(), new HashMap<Integer, Integer>(pedidoInicial.getProdutosPedido()));
		
		for(Integer id : pedido.getProdutosPedido().keySet()){
			if(Loja.produtos.get(id-1).getEstoque() < pedido.getProdutosPedido().get(id)){
				Loja.produtos.get(id-1).addDemandaReprimida(pedido.getProdutosPedido().get(id));
				pedido.getProdutosPedido().put(id, Loja.produtos.get(id-1).getEstoque());
				System.out.println("Demandas reprimidas do " + id + ": " + Loja.produtos.get(id-1).getDemandaReprimida().size());
			}
		}
		
		return pedido;
	}
	
	public synchronized void setEstoque(int estoque){
		this.estoque = estoque;
	}
}
